#pragma once

#include <openssl/md4.h>
#include  "MDAlgorithm.h"

class MD4Algorithm final : public MDAlgorithm<MD4_CTX> {
public:

    MD4Algorithm() = default;
    MD4Algorithm(const MD4Algorithm&) = delete;
    MD4Algorithm& operator=(const MD4Algorithm&) = delete;
    virtual ~MD4Algorithm() = default;

private:

    virtual int MD_Init(MD4_CTX *ctx) const override;
    virtual int MD_Update(MD4_CTX *ctx, const char* data, size_t len) const override;
    virtual int MD_Final(unsigned char* md, MD4_CTX* ctx) const override;
};
